/*题目：编写一个函数，该函数将一个二进制数值字符串转换为十六进制数值字符串。
函数头：char* bin2Hex(char binStr[],int n) //binStr表示要转换的二进制字
符串
提示：为了提升转换性能，建议按照人类的思维去执行转化操作，4个二进制位对应1个16
进制位，因此需要有0000-1111与0-F的映射函数。
调用样例：
bin2Hex("1111111",7);
返回样例：
"7F"
*/
#include<stdio.h>
#include<string.h>
char * bin2Hex(char binStr[],int n);
char map[] = "0123456789ABCDEF";

int main(void)
{
    char binStr[] = "1111111";
    int n = 7;
    char hexChar = bin2Hex(binStr,n);
    printf("%c", hexChar);
    return 0;
}

char * bin2Hex(char binStr[],int n)
{
    int group_number = 0;
    if (n % 4 != 0 )
    {
        group_number = n / 4 + 1;
        int zeros = group_number * 4 - n;
        char newstr[group_number * 4 + 1];
        for (int i = 0; i < zeros; i++)
        {
            newstr [i] = '0';
        }
        strcat(newstr, binStr);
        for (int i = 0; i < group_number; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%c", newstr[i * 4 + j]);
            }
            printf(" ");
        }
        
    }
}